imx: imx8qx: add system off support
authorAnson Huang <[email protected]>
Thu, 12 Jul 2018 02:52:55 +0000 (10:52 +0800)
committerAnson Huang <[email protected]>
Thu, 12 Jul 2018 03:00:41 +0000 (11:00 +0800)
Add system power off support for i.MX8QX,
when Linux kernel issues "poweroff" command,
TF-A will send command to inform system
controller to power off whole board according
to board design, tested on i.MX8QX MEK board.

Signed-off-by: Anson Huang <[email protected]>
plat/imx/common/imx8_psci.c [new file with mode: 0644]
plat/imx/common/include/plat_imx8.h
plat/imx/imx8qx/imx8qx_psci.c
plat/imx/imx8qx/platform.mk

diff --git a/plat/imx/common/imx8_psci.c b/plat/imx/common/imx8_psci.c
new file mode 100644 (file)
index 0000000..0b0dcb5
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <arch.h>
+#include <arch_helpers.h>
+#include <debug.h>
+#include <plat_imx8.h>
+#include <sci/sci.h>
+#include <stdbool.h>
+
+void __dead2 imx_system_off(void)
+{
+       sc_pm_set_sys_power_mode(ipc_handle, SC_PM_PW_MODE_OFF);
+       wfi();
+       ERROR("power off failed.\n");
+       panic();
+}
+
+
index 27d4c376e697edc74899ea7010c01ca9be0fed1e..640d60e76a55c14560c5df4023ce7e4d2ce60181 100644 (file)
@@ -17,4 +17,5 @@ void plat_gic_cpuif_enable(void);
 void plat_gic_cpuif_disable(void);
 void plat_gic_pcpu_init(void);
 
+void __dead2 imx_system_off(void);
 #endif /*__PLAT_IMX8_H__ */
index 47233dc8d00e5146f77e6f8e618ace4d2d258a55..1e8f7fa491d7f8599d630589854e8be2348bee7b 100644 (file)
@@ -64,6 +64,7 @@ static const plat_psci_ops_t imx_plat_psci_ops = {
        .pwr_domain_on = imx_pwr_domain_on,
        .pwr_domain_on_finish = imx_pwr_domain_on_finish,
        .validate_ns_entrypoint = imx_validate_ns_entrypoint,
+       .system_off = imx_system_off,
 };
 
 int plat_setup_psci_ops(uintptr_t sec_entrypoint,
index c16ce6e603d3c8a9a2a65c4db9d314ea8251f1aa..7d6e3fdfe1a1a5500b912e66e6012bc3bf2e97e4 100644 (file)
@@ -20,6 +20,7 @@ BL31_SOURCES          +=      plat/imx/common/lpuart_console.S        \
                                plat/imx/imx8qx/imx8qx_bl31_setup.c     \
                                plat/imx/imx8qx/imx8qx_psci.c           \
                                plat/imx/common/imx8_topology.c         \
+                               plat/imx/common/imx8_psci.c             \
                                lib/xlat_tables/xlat_tables_common.c    \
                                lib/xlat_tables/aarch64/xlat_tables.c   \
                                lib/cpus/aarch64/cortex_a35.S           \